// 用来分配Auth的树形结构数据
function fillAuthTree() {
    // 发送ajax请求查询Auth数据
    var ajaxReturn = $.ajax({
        url: "assign/get/all/auth",
        type: "post",
        dataType: "json",
        async: false
    });


    if (ajaxReturn.status != 200){
        layer.msg("请求出错:"+ajaxReturn.status+"说明是:"+ajaxReturn.statusText)
        return;
    }
    // 从响应中获取数据
    var authList = ajaxReturn.responseJSON.data;



    // 开启zTree自动组装数据
    var setting = {
        data:{
            simpleData: {
                enable: true,
                pIdKey: "categoryId"
            },
            key: {
                // 使用title属性不使用默认的name
                name: "title"
            }
        },
        check:{
            enable: true
        }
    }
    // 生成树形结构
    $.fn.zTree.init($("#authTreeDemo"), setting, authList);

    // 获取zTreeObject对象
    var zTreeObj = $.fn.zTree.getZTreeObj("authTreeDemo")
    // 调用zTreeObject对象的方法，把节点展开
    zTreeObj.expandAll(true);

    // 查询已分配的Auth的id
    ajaxReturn = $.ajax({
        url:"assign/get/assigned/auth/id/by/role/id",
        type:"post",
        data:{
            roleId:window.roleId,
        },
        dataType:"json",
        async: false
    });
    if (ajaxReturn.status != 200){
        layer.msg("请求出错:"+ajaxReturn.status+"说明是:"+ajaxReturn.statusText)
        return;
    }

    // 从响应结果中拿到数据
    var authIdList = ajaxReturn.responseJSON.data;
    // 根据数据勾选对应的节点
    // 遍历这个数组
    for (var i=0; i < authIdList.length; i++){
        var authId = authIdList[i];

        // 根据id查询树形结构中的节点
        var treeNode = zTreeObj.getNodeByParam("id",authId);

        // 将treeNode设置为被勾选
        var checked = true; // 表示节点勾选
        var checkTypeFlag = false; // 表示不联动,不联动是为了避免把不该勾选的勾选上

        // 执行
        zTreeObj.checkNode(treeNode,checked,checkTypeFlag);
    }
}

// 显示确认模态框
function showConfirmModal(roleArray) {

    // 打开模态框
    $("#confirmModal").modal("show");

    // 清除旧的数据
    $("#roleNameSpan").empty();

    window.roleIds = [];

    // 遍历roleArray数组
    for (var i = 0; i < roleArray.length; i++){
        var role = roleArray[i];

        var roleName = role.roleName;
        $("#roleNameSpan").append(roleName + "<br/>")
        var roleId = role.roleId;

        window.roleIds.push(roleId);
    }
    
}


// 执行分页生成页面效果，任何时候调用这个函数都会重新加载页面
function generatePage() {
    // 获取分页数据
    getPageInfoRemote();


    
}
// 远程访问服务器端获取pageInfo的数据
function getPageInfoRemote() {

    $.ajax({
        url:"role/get/page/info",
        type:"post",
        data:{
            'pageNum':window.pageNum,
            'pageLimit':window.pageLimit,
            'keyWord':window.keyWord
        },
        dataType:'json',
        success:function (res) {
            pageInfo = res.data;
            fillTableBody(pageInfo);
            if(res.result == "ERROR"){
                layer.msg(res.message)
            }
        },
        error:function (res) { // 处理失败请求
            layer.msg(res.statusText+"状态码:"+res.status)
        }

    });

}
// 填充表格
function fillTableBody(pageInfo) {
    // 清楚tbody中旧的数据
    $("#rolePageBody").empty();
    $("#Pagination").empty();
    // 判断pageInfo对象是否有效
    if (pageInfo == null || pageInfo == undefined || pageInfo.list == null || pageInfo.list.length == 0) {
        $("#rolePageBody").append("<tr><td colspan='4' style='text-align: center'>抱歉没有查询到你搜索的数据</td></tr>")
        return;
    }

    // 使用pageInfo填充tBody部分
    for (var i = 0; i < pageInfo.list.length; i++){
        var role = pageInfo.list[i];
        var roleId = role.id;
        var roleName = role.name;



        var tr = `<tr>
                                <td>`+(i+1)+`</td>
                                <td><input type="checkbox" name="checkId" value="`+roleId+`"></td>
                                <td>`+roleName+`</td>
                                <td>
                                    <button type="button" value="`+roleId+`" class="btn btn-success btn-xs checkBtn"><i class=" glyphicon glyphicon-check"></i></button>
                                    <button type="button" value="`+roleId+`" class="btn btn-primary btn-xs pencilBtn"><i class=" glyphicon glyphicon-pencil"></i></button>
                                    <button type="button" value="`+roleId+`" class="btn btn-danger btn-xs removeBtn"><i class=" glyphicon glyphicon-remove"></i></button>
                                </td>
                            </tr>`;
        $("#rolePageBody").append(tr)
    }
    // 生成分页导航条
    generateNavigator(pageInfo);
    
}
// 生成分页页码导航条
function generateNavigator(pageInfo) {
    // 获取总记录数
    var totalRecord = pageInfo.total;

    // 声明相关属性
    var properties = {
        num_edge_entries: 3,
        num_display_entries: 5, //主体页数
        callback: paginationCallBack,
        items_per_page:pageInfo.pageSize,
        current_page:pageInfo.pageNum - 1,  //当前页，pagination默认从零开始,PageHerper默认从1开始所以要减一
        prev_text:"上一页",
        next_text:"下一页"
    }

    // 调用pagination()函数
    $("#Pagination").pagination(totalRecord,properties);
}
// 翻页时的回调函数
function paginationCallBack(pageIndex,jQuery) {
    // 修改window对象的pageNum
    window.pageNum = pageIndex + 1;

    // 调用分页函数
    generatePage();

// 由于每一个按钮都是超链接，所以在这个函数最后取消超链接的默认行为
    return false;
}